Intelligent surfacing of reminders

ABSTRACT

Calendar and scheduling applications organize and display user events and provide event reminders. A method of triggering a reminder includes accessing a reminder which describes an event. An individual associated with the event, other than the user, is identified. A future time is predicted when the user will be within proximity of the individual. A time to trigger the reminder for presentation to the user is determined, such that the time to trigger the reminder occurs in advance of the predicted future time when the user will be within proximity of the individual. Based on a determination that the time for triggering the reminder has occurred, the reminder is triggered to be presented to the user.

BACKGROUND

Calendar and scheduling applications and services generally organize anddisplay a user's activities, tasks, jobs, appointments, meetings, andother types of events. They may also provide event reminders ornotifications that are presented to a user based on the date and time ofan event. Existing services may be limited to presenting or triggering areminder at the time of an event, a default time period before theevent, or at some time period specified by a user, which may or may notprovide enough advance notice to the user. Some approaches to triggeringreminders are based on geofencing and/or detecting communication with anindividual associated with a reminder.

BRIEF SUMMARY

This summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used as an aid in determining the scope of the claimed subjectmatter.

In various embodiments, systems, methods, and computer storage media areprovided for triggering an event reminder or notification to a user at arelevant time based on contextual information. A reminder may betriggered based on information such as calendar information, userprofile information, and/or one or more conditions such as frequentlyvisited locations, frequently traveled routes, travel time, meetingparticipants, proximity to another individual, and so forth. In anembodiment, another individual associated with the reminder isidentified, and a future time is predicted for when the user is expectedto be within proximity of the other individual. The time to trigger thereminder may then be based on some amount of time in advance of when theuser is expected to be within proximity of the other individual.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention is described in detail below with reference to theattached drawing figures, wherein:

FIG. 1 depicts an exemplary operating environment suitable for use withan embodiment of the present invention;

FIG. 2 depicts a flowchart of an exemplary method of triggeringpresentation of a reminder suitable for use with an embodiment of thepresent invention;

FIG. 3 depicts a flowchart of an exemplary method of triggeringpresentation of a reminder suitable for use with an embodiment of thepresent invention;

FIG. 4 depicts an exemplary system for triggering presentation of areminder suitable for use with an embodiment of the present invention;and

FIG. 5 depicts an exemplary system for triggering presentation of areminder suitable for use with an embodiment of the present invention.

DETAILED DESCRIPTION

Triggering an event reminder or notification in a user device in advanceof an associated event or task may provide the user with enough time totravel and/or make whatever preparations may be needed for the event ortask. Contextual information may be utilized to determine how far inadvance to surface, or trigger, a notification. Contextual informationabout an event may be determined from user profile information such asfrequently visited locations, frequently traveled routes, locationsassociated with an event, individuals associated with the user,locations associated with the user, a user's current location, and soforth. Contextual information about an event may also be determined fromother information in the user's calendar and/or information from anotheruser's calendar. In an embodiment, contextual information in combinationwith data or parameters associated with a reminder is utilized todetermine a relevant time to surface the reminder. A relevant time mayinclude a time far enough in advance of an event that allows the user totravel from the current location to the event and arrive by (or before)the time the event is scheduled to occur. A relevant time may include atime prior to a predicted confluence of circumstances that enable anevent to occur, such as for an event not tied to a specific time.

As used herein, the term “event” includes occurrences, happenings,planned occasions, tasks to be performed, information to be remembered,and so forth. Thus, by way of example and not limitation, events caninclude meetings, errands, assignments, special occasions, and generallyanything of which a user wishes or needs to be reminded. Some events maybe associated with specific locations, times, and/or individuals, suchas a work meeting with colleagues in a particular conference room at aspecific date and time. However, an event need not be associated with aparticular location, time, or individual. For example, the task “buymilk on the way home from work today” does not specify a particulargrocery store, and is not associated with an individual (other than theuser). The task “check out a book on gardening from the library on 12thStreet” does not specify a particular date, time, or individual. Thetask “pay back Fred the five dollars I owe him” does not specify eithera specific date or location. Some embodiments determine a relevant timeto trigger a notification for an event regardless of whether the eventis tied to specific locations, dates, or times.

In accordance with some embodiments of the present invention, eventreminder data is analyzed to identify an individual (other than theuser) associated with the reminder/event. Event reminder data mayinclude parameters that are used to configure a reminder, such aslocations, dates, times, subjects, references to other users orindividuals, and so forth. Another user or individual may be identifiedbased on descriptive terms or names within the reminder data inconjunction with contextual information about the user. Based oncontextual information associated with the user, a future time isdetermined for when the user is predicted, or expected, to be withinproximity of the individual that is associated with the reminder. Thecontextual information may include information such as calendarinformation, scheduled events, other reminders, known routeshistorically traveled by the user, known locations historically visitedby the user, and so forth. In an embodiment, a future time is determinedfor when the user is predicted, or expected, to be within proximity ofthe individual that is associated with the reminder based on a specificevent within the user's calendar data. For example, when the user'scalendar data includes a second event that is associated with the otherindividual, the scheduled time of the second event is a future time whenthe user is expected to be within proximity of the individual. Forexample, the second event might be a planned dinner with the otherindividual. Alternatively, the future time when the user is expected tobe within proximity of the individual may be based on information fromboth the user's calendar information (and/or other contextualinformation) and the other individual's calendar information (and/orcontextual information). In an embodiment, the other individual'scalendar and/or contextual data may be utilized to determine that theindividual will at the same location (or a nearby location) as a futurelocation of the user as determined from the user's calendar and/orcontextual data. Users may be provided with an option to allow theircalendar information and/or other portions of their contextualinformation to be accessed for the purpose of coordinating events withcertain other users. As used herein, the term proximity refers to anamount of distance and/or travel time falling within a threshold value,where the threshold value is designated as an amount of distance ortravel time which is acceptable to suggest that a user travel toaccomplish a task, event, and so forth. For example, if the user needsto perform a task related to another individual (e.g., pay Joe twentydollars), the proximity threshold is a five-minute travel time, and aprediction is made that the user and the other individual will be withina five minute walk (or a five minute drive) of each other when the useris at a particular location, then it is acceptable to present the userwith a reminder or suggestion that the task may be performed while atthe particular location.

In an embodiment, a trigger time, i.e., an advance time to trigger areminder, is determined and the reminder is triggered based on thedetermined trigger time. The trigger time may be determined based on theamount of travel time required to reach the location of the secondevent. For example, a starting location of the user may be predicted,and a predicted route from the starting location to the location of thesecond event may be determined. The travel time may be determined basedon factors such as the distance along the route, speed limits, trafficpatterns, weather conditions, and so forth. In an embodiment, thetrigger time may be determined at least in part based on a geofence,e.g., a reminder may be triggered when a user leaves a particularlocation or arrives at a particular location (such as a workplace, home,a store, and so forth), or may be triggered some determined amount oftime before or after the user leaves from, or arrives at, a particularlocation. The determined amount of time may be determined based ontravel time and/or any of the other factors described above.

In an embodiment, reminders are presented at a particular location, orpage, within a user interface. For example, a user interface may have a“home” page or a “need to know” section, or some other designatedportion of the user interface, where the user can view any outstandingreminders that have surfaced. Thus, when a reminder is triggered, it maybe placed in the designated portion of the user interface where it isavailable to be viewed when the user chooses. Additionally, a remindermay persist in that location of the user interface for some period oftime such that the reminder is still presented if the user returns tothe designated portion of the user interface at a later time. In anembodiment, a user is not notified that a reminder has been placed inthe designated portion of the user interface, but rather must view thatportion of the interface to determine whether a reminder has been placedthere. In another embodiment, a user may receive a notification, such asan audible tone, a vibration, or a pop-up message, that a reminder hasbeen placed in the designated portion of the user interface. In someembodiments, a reminder is presented directly to the user when the useris viewing other portions of the user interface, either instead of, orin addition to, placing the reminder in the designated portion of theuser interface. For example, a reminder may be presented as a pop-upmessage, dialog box, or other type of unsolicited message. A remindermay also be presented regardless of whether the user is actively viewingthe device, and an audible tone or vibration may be utilized to attractthe user's attention to view the reminder.

In a first aspect, a method of triggering presentation of a reminder isprovided. The method includes accessing the reminder, which describes anevent associated with a user of a user device. An individual associatedwith the first event, other than the user, is identified. A future timeis predicted at which the user will be within proximity of theindividual. A time to trigger the reminder for presentation to the useris determined, such that the time to trigger the reminder occurs inadvance of the future time at which the user is predicted to be withinproximity of the individual. A determination is made that the time fortriggering the reminder has occurred, and based on the determination,the reminder is triggered to be presented to the user.

In a second aspect, a system for triggering presentation of a calendarevent reminder is provided. The system includes one or more computingdevices and a data storage configured to store calendar informationassociated with a user of a user device. The system also includes a datacollection component configured to collect contextual informationassociated with the user, and a data storage that is configured to storethe contextual information. Also included in the system is an inferenceengine configured to access an event reminder that describes an eventassociated with a user of a user device, identify an individualassociated with the event, other than the user, and determine a futuretime when the user is predicted to be within a predetermined proximityof the individual, determine a time to trigger the reminder forpresentation to the user, such that the trigger time will occur a periodof time prior to the future time when the user is predicted to be withinthe predetermined proximity of the individual. The system also includesa reminder surfacing component configured to determine that the time fortriggering the reminder has occurred and trigger the reminder to bepresented to the user.

In a third aspect, a method of triggering presentation of a calendarevent reminder is provided. An event reminder that describes an eventassociated with a user of a user device is accessed. An individualassociated with the event, other than the user, is identified. A futuretime is predicted at which the user will be within a predeterminedproximity of the individual at a point along a route which the user ispredicted to travel. A time to trigger the reminder for presentation tothe user is determined, such that the time to trigger the reminderoccurs a period of time prior to the predicted future time when the userwill be within the predetermined proximity of the individual. Adetermination is made that the time to trigger the reminder hasoccurred, and the reminder is triggered to be presented to the user.

Referring initially to FIG. 2 in particular, a flowchart depicts anexemplary method of triggering presentation of a reminder suitable foruse with an embodiment of the invention, and is generally referred to asmethod 200. Method 200 is merely an example of one suitable method andis not intended to suggest any limitation as to the scope of use orfunctionality of the invention. Neither should method 200 be interpretedas having any dependency or requirement relating to any single componentor combination of components illustrated therein.

At a step 210, a reminder is accessed which describes an eventassociated with a user of a user device. The user device may be a userdevice similar to computing device 100 described below with regard toFIG. 1. The reminder may include information about an event such as atask, a happening, a gathering, a special occasion, a meeting, alocation, a date, a time, one or more other individuals, and so forth.The reminder may be stored in memory on the user device as part of acalendaring application, scheduling application, or other type ofapplication that stores and utilizes reminders. The reminder mayalternatively be stored remotely, such as on a network server thatcommunicates with the user device and manages reminders for multipleuser devices. Examples of reminders that are to be presented to the usermight include “buy milk at the Acme Grocery Store after work tonight,”“meet with Sam and Tom in Conference Room 15 at 2:00 pm on Jun. 4,2015,” “pay Joe the twenty dollars I owe him,” and so forth. In anembodiment, a reminder need not be associated with a specificindividual, a specific location, or a specific date/time.

At a step 212, an individual (other than the user) is identified that isassociated with the event. In the example reminders described above, Samand Tom are individuals associated with the meeting reminder, and Joe isan individual associated with the reminder to repay a loan. Onedifference between those two reminders is that the meeting reminder isassociated with a location and a date/time, whereas the reminder torepay the loan is not associated with either a location or a time. Theindividual may be identified in a variety of ways. Based on anidentifying term or name (e.g., “Joe,” “Tom Smith,” “the kids,” and soforth) the individual may be identified from a user profile associatedwith the user, which stores contextual information about the user.Examples of contextual information that might be helpful in identifyingan individual include indications of family members, friends, coworkers,and generally any persons that are associated with the user, and mayalso include indications of the type of relationship or association theuser has with the individuals. In an embodiment, a user may designateparticular individuals as members of an “inner circle” associated withthe user. Members of the inner circle may be assigned various prioritylevels which may be utilized when surfacing a reminder. For example, auser's spouse may be designated as a member of the inner circle, whereasthe user's realtor may not be. In that event, when a reminder associatedwith the spouse and a reminder associated with the realtor are bothsurfaced, the reminder associated with the spouse may be presented moreprominently, highlighted, or otherwise emphasized, based on the priorityof the spouse over the realtor, due to the spouse's designation of beingin the user's inner circle. Similarly, a spouse and a friend may both beincluded in a user's inner circle, but the user may designate the spouseas having a higher priority than the friend. Thus, a reminder associatedwith the spouse would be given emphasis over the reminder associatedwith the friend, even though both are in the inner circle, based on thepriority assigned to each. Other examples of individuals that a usermight prefer to prioritize include children, other family members, awork supervisor, and so forth.

At a step 214, a future time is determined at which the user ispredicted to be within proximity of the individual that is associatedwith the reminder. The future time may be determined based on contextualinformation associated with the user. The contextual information mayinclude information such as calendar information, scheduled events,other reminders, known routes historically traveled by the user and/orthe times they were traveled, known locations historically visited bythe user and/or the times they were visited, and so forth. Similarly,known information about the other individual may be used to predict theother individual's location. This may include both: (1) information thatis known within the user's contextual information without requiringaccess to the other individual's personal information (e.g., a calendarinvite that includes the individual, a home location for the individual,a work location for the individual, etc.); and (2) information thatwould require access to the other individual's personal information(e.g., calendar information, reminders, current GPS from theindividual's mobile device, and so forth.) The other individual'spersonal information may be accessible based on permission granted bythe other individual. In an embodiment, the permission may be grantedbased on a designation of one or both individuals as being in the otherindividual's inner circle. The proximity of the user to the otherindividual may be determined based on a distance between the user andthe other individual, such as a straight-line distance or a distancealong a route such as streets, sidewalks, and so forth. The distanceneed not be determined based only on typical units of measure (e.g.,miles, feet, and so forth), but may also be determined based on suchfactors as whether the user and the individual are within the samebuilding, within a certain number of buildings of each other, and soforth. The proximity may also be based on an amount of travel timebetween the user and the individual, e.g., an amount of walking time,driving time, or other transportation time.

In an embodiment, the future time is determined based on the user'scalendar information. A second event is identified which is associatedwith the same individual, and which is scheduled at a future time. Thescheduled time of the second event is thus identified as the future timeat which the user is predicted to be within proximity of the individual.For example, suppose that the reminder is “pay Joe the twenty dollars Iowe him.” Upon accessing the user's calendar information, anotherevent—“meet Joe for racquetball next Saturday at 3:00 pm”—might beidentified. Next Saturday at 3:00 pm may thus be identified as a futuretime at which the user is predicted to be within proximity of Joe, whichwould be an opportune time to repay the loan. The second event may be aseparate event from the first event. For instance, in the example above,“meet Joe for racquetball next Saturday at 3:00 pm” and “pay Joe thetwenty dollars I owe him” may be stored as separate, unrelated events inthe user's calendar/reminder information. The two events are thusindependent of each other, i.e., either may occur without the other andthey are not specifically required to occur at the same time orlocation.

In the example above, the reminder “pay Joe the twenty dollars I owehim” is not associated with a particular place or time, e.g., is notscheduled to take place at a specific place or time. However, in oneembodiment, even if a reminder is associated with a specific time and/orlocation, a different time and/or location may be determined as anopportune time to perform the task/event, and suggested to the user. Forexample, suppose that the reminder is “pay Joe the twenty dollars I owehim at church next Sunday.” From the user's calendar information, thesecond event, “meet Joe for racquetball next Saturday at 3:00 pm,” maybe identified as an earlier opportunity to repay Joe, and a reminder maybe surfaced in advance of the racquetball game.

At a step 216, a relevant time to trigger the reminder for presentationto the user is determined. A relevant time may be a time far enough inadvance of the second event that the user has time to take whateveractions may be necessary to accomplish any tasks or preparationassociated with the reminder. The time to trigger the reminder may be aspecific time, or may be based on a geofence, such as when the userleaves from or arrives at a particular location. In an embodiment, afuture location of the user is predicted at which the user will be inproximity of the individual at the predicted future time. A startinglocation of the user is identified, and a route the user will travelfrom the starting location to the future location is predicted. Anamount of required travel time along the predicted route from thestarting location to the future location may be determined, and the timeto trigger the reminder may be determined based at least in part on theamount of required travel time. For example, if the user is at home nextSaturday prior to meeting with Joe, a relevant reminder might triggerbefore Joe leaves home, so that the user is reminded to take the twentydollars to the racquetball game. The user's location prior to thescheduled event may be determined based on information gathered from theuser's mobile phone, a global positioning system (GPS), or otherindications of the user's presence at a particular location. The user'slocation may also be predicted based on historical travel or visitationpatterns stored as part of the user's contextual information. Forexample, if a determination is made from the contextual information thatthe user always (or typically) visits a particular coffee shop everySaturday at 2:00 pm, the coffee shop may be predicted to be the user'scurrent location at 2:00 pm that Saturday. A relevant time to triggerthe reminder might be at an early enough time that the user is able tovisit a local ATM (or return home) to obtain the cash if necessary, andstill arrive at the racquetball game on time.

In one embodiment, the starting location is predicted or identified asthe current location of the user. In another embodiment, as describedabove, the starting location is identified based on a predicted futurelocation of the user. For example, the user's user profile data may beaccessed to identify historical travel patterns of the user and identifyone or more locations the user has frequently visited. In an embodiment,one or more locations may be identified which the user has historicallyvisited around the same time on the same day of the week, or hashistorically visited prior to visiting the location where the user ispredicted to be in proximity to the individual. A most likely startinglocation may be determined from the historically-visited locations basedon a probability or confidence score associated with each of thehistorically-visited locations. The predicted future location of theuser prior to the time the user will be in proximity of the individualis thus identified as the starting location of the user.

In an embodiment, predicting the route the user will travel from thestarting location to the future location includes accessing user profiledata associated with the user and identifying one or more routes theuser has historically traveled from the starting location to the futurelocation. A most likely route may be determined from the routes the userhas historically traveled, based on a probability or confidence scoreassociated with each of the historically-travelled routes. The mostlikely route is thus identified as the predicted route the user willtravel from the starting location to the future location.

At a step 218, a determination is made that the time for triggering thereminder has occurred, e.g., based on a correspondence between thecurrent time and a particular predetermined time, or based on acorrespondence between the user's current location and a geofence. Forexample, the trigger time might be 2:30 pm, based on the user's locationat the coffee shop, allowing for travel time to the nearest ATM andtravel time from the ATM to the racquetball court. At a step 220, oncethe trigger time has occurred, the reminder is triggered to be presentedto the user. In an embodiment, once the reminder is triggered, it isconfigured to persist for some period of time prior to when the userwill be within proximity of the individual. In an embodiment, when auser has multiple user devices, the reminder may be surfaced on any orall of the user devices. If the user has a smartphone and a tabletdevice, the reminder may surface on both of them. In an embodiment, thereminder may be surfaced on the device currently in use. Alternatively,the reminder may be surfaced on a particular device based on one or moreuser preferences associated with the reminder or with the user device.

Referring to FIG. 3, a flowchart depicts an exemplary method oftriggering presentation of a reminder suitable for use with anembodiment of the invention, and is generally referred to as method 300.Method 300 is merely an example of one suitable method and is notintended to suggest any limitation as to the scope of use orfunctionality of the invention. Neither should method 300 be interpretedas having any dependency or requirement relating to any single componentor combination of components illustrated therein.

At a step 310, a reminder is accessed which describes an eventassociated with a user of a user device. The user device may be similarto computing device 100 described below with regard to FIG. 1. Thereminder describes an event that is associated in some way with the userof a user device, and is configured to be presented on the user deviceat a point in time to reminder the user of the event. The reminder mayinclude information about an event such as a task, a happening, agathering, a meeting, a special occasion, a location, a date, a time,one or more other individuals associated with the reminder, and soforth. In some embodiments, a reminder need not be associated with anindividual, a location, or a particular date/time. The reminder may bestored on the user device or may be stored remotely, such as in thecloud or on a network server that communicates with the user device andmanages reminders for multiple user devices. Examples of reminders thatare to be presented to the user might include “deliver quarterly reportsto Paul,” “buy a jacket at the Acme Clothing Store,” “pay Joe the twentydollars I owe him,” and so forth.

At a step 312, an individual (other than the user) is identified that isassociated with the event. In the example reminders described above,Paul is an individual associated with delivery of the quarterly reports,and Joe is an individual associated with repaying a loan. There is noindividual other than the user associated with buying a jacket. In someembodiments, a reminder need not be associated with a particularindividual, location, or date/time. An individual may be identified in avariety of ways. Based on an identifying term or name (e.g., “Paul,”“wife,” “the kids,” and so forth) the individual may be identified froma user profile associated with the user, which stores contextualinformation about the user. Examples of contextual information thatmight be helpful in identifying an individual include lists of familymembers, friends, coworkers, generally any persons that are associatedwith the user, and an indication of their relationship or associationwith the user.

At a step 314, a future time is determined at which the user ispredicted to be within a predetermined proximity of the individual at apoint along a predicted route the user will travel. The proximity of theindividual may be determined based on a distance between the point alongthe predicted route and the individual, such as a straight-line distanceor a distance along a route such as streets, sidewalks, and so forth.The proximity may also be based on an amount of travel time between thepoint along the predicted route and the individual, e.g., an amount ofwalking time, driving time, or other transportation time. In anembodiment, the proximity is determined based on an amount of distanceand/or travel time required to deviate from the predicted route in orderto meet up with the other individual.

The future time may be determined based on contextual informationassociated with the user. The contextual information may includeinformation such as calendar information, scheduled events, otherreminders, known routes historically traveled by the user and/or thetimes they were traveled, known locations historically visited by theuser and/or the times they were visited, a home location of the user, acurrent location of the user, and so forth. Similarly, known informationabout the other individual may be used to predict the other individual'slocation. This may include both: (1) information that is known withinthe user's contextual information without requiring access to the otherindividual's personal information (e.g., a calendar invite that includesthe individual, a home location for the individual, a work location forthe individual, and so forth); and (2) information that would requireaccess to the other individual's personal information (e.g., calendarinformation, reminders, current GPS from the individual's mobile device,and so forth.) The other individual's personal information may beaccessible based on permission granted by the other individual.

As one example, suppose the reminder is “pay Joe the twenty dollars Iowe him.” Upon accessing the user's calendar information, the event“meet with realtor at Acme Realty,” scheduled for next Saturday at 3:30pm, might be identified. A route the user will travel to Acme Realty forthe scheduled event may be predicted based at least on one or more ofthe user's calendar information, the user's user profile, the user'shistorical travel patterns, a starting location, and so forth. In anembodiment, predicting the route the user will travel includesidentifying a route that the user is currently traveling and predictinga remainder of the current route as the route.

Joe's location at the time the user will be traveling the route to AcmeRealty may also be predicted. For example, Joe's calendar informationmay be accessed, and the event “work out at Acme Gym next Saturday at3:00 pm” might be identified. In some embodiments, Joe's location at thetime the user will be traveling the route to Acme Realty is determinedfrom Joe's user profile information and/or Joe's historical travelpatterns. A determination may then be made that Acme Gym is within apredetermined proximity of some point along the route the user ispredicated to travel to Acme Realty. A time may be predicted at whichthe user will reach that point along the route, and a determination madethat Joe will be at Acme Gym at that time. The predicted time is thusidentified as the predicted future time when the user will be within thepredetermined proximity of the individual.

In some embodiments, determining the predicted future time when the userwill be within proximity of the other individual includes selecting aroute, then suggesting the route to the user. For example, a startinglocation of the user may be identified, and a destination location maybe identified to which the user is predicted to travel at a future time.In an embodiment, the destination location for the user is independentof the location where the other individual is predicted to be located,e.g., they are not the same location. One or more potential routes fromthe starting location to the destination location may be identifiedbased on information such as mapping data, geospatial data, and soforth. A route may be selected from the one or more potential routesbased on determining a location where the individual is predicted to belocated at a future time, and determining that a point along one of thepotential routes is within proximity of the location where theindividual is predicted to be located. That route may be suggested tothe user, and the future time when the user is predicted to be withinproximity of the individual may be determined by identifying a time whenthe user is predicted to reach the point along the suggested route.

At a step 316, a relevant time to trigger the reminder for presentationto the user is determined. A relevant time may be a time far enough inadvance of when the user will be within proximity of the individual thatthe user has time to take whatever actions and/or preparations may benecessary to accomplish any tasks associated with the reminder. The timeto trigger the reminder may be a specific time, or may be based on ageofence, such as when the user leaves from or arrives at a particularlocation. Additionally, because the user may have no foreknowledge ofJoe's whereabouts on Saturday, the reminder may be modified to indicatethat Joe will be at Acme Gym when the user is traveling the predictedroute. The reminder may also be modified to suggest that the userdeviate from the predicted route to stop by the gym and repay Joe. Forexample, if the user is at home next Saturday prior to traveling to AcmeRealty, a relevant reminder might trigger before the user leaves home,presenting a message such as: “pay Joe the twenty dollars I owe him atAcme Gym while traveling to Acme Realty.” The reminder thus informs theuser of a convenient opportunity to repay Joe, and also serves to remindthe user to take the twenty dollars along. The time at which thereminder is triggered may vary, depending on the user's location. Forexample, Acme Realty might be a fifteen minute drive from the user'shome, but if the user is visiting a park with friends, it might be aforty-five minute drive from the park to Acme Realty. The reminder wouldthus need to be triggered sooner at the park than at the user's home,based on a determined travel time associated with the route from aparticular location to Acme Realty. The user's location prior to thescheduled event may be determined based on information gathered from theuser's mobile phone, a GPS, cell tower locations, WiFi connections,and/or other indications of the user's presence at a particularlocation. The user's location may also be predicted based on historicaltravel or visitation patterns stored as part of the user's contextualinformation. For example, if a determination is made from the contextualinformation that the user always (or typically) visits a particularcoffee shop every Saturday at 2:30 pm, the coffee shop may be predictedto be the user's location based on that visitation pattern. A relevanttime to trigger the reminder might be at an early enough time that theuser is able to visit a local ATM (or return home) to obtain the cash ifnecessary, and still have time to stop by Acme Gym on the way to AcmeRealty.

At a step 318, a determination is made that the time for triggering thereminder has occurred, e.g., that the current time corresponds to aparticular predetermined time, or based on a geofence. For example, thetrigger time might be 2:45 pm, based on the user's location at thecoffee shop, allowing for travel time to the nearest ATM and travel timefrom the ATM to Acme Realty, also allowing time to stop by Acme Gym. Ata step 320, once the trigger time has occurred, the reminder istriggered to be presented to the user.

Referring to FIG. 400, an exemplary system is depicted for triggeringpresentation of a reminder suitable for use with an embodiment of theinvention, and is generally referred to as system 400. System 400 ismerely an example of one suitable system and is not intended to suggestany limitation as to the scope of use or functionality of the invention.Neither should system 400 be interpreted as having any dependency orrequirement relating to any single component or combination ofcomponents illustrated therein. Other arrangements and elements can beused in addition to or instead of those shown, and some elements may beomitted altogether for the sake of clarity. Further, many of theelements described herein are functional entities that may beimplemented as discrete or distributed components or in conjunction withother components, and in any suitable combination and location.

System 400 includes a server 410, a data collection component 412, aninference engine 414, a reminder surfacing component 416, a user profiledata storage 418, a calendar information storage 420, and may optionallyinclude a user device 422. The various components of system 400 maycommunicate via a network 426.

Server 410 includes one or more computing devices, and may be oneserver, a plurality of servers, or other computing devices, that areconfigured to communicate via network 424. Server 410 may comprise oneor more applications or services on a user device, across multiple userdevices, and/or in the cloud. Data collection component 412 isconfigured to collect contextual information associated with the user.In an embodiment, the contextual information includes user preferences,identification of individuals associated with the user, frequentlyvisited locations, frequently traveled routes, locations associated withevents, locations associated with the user, the user's current location,and so forth. The contextual information may be collected or derivedfrom a variety of sources. In some embodiments, the contextual data maybe obtained from one or more sensors, such as sensors providingsmartphone data, home-sensor data, GPS data, vehicle signal data,wearable device data, user device data, gyroscope data, accelerometerdata, calendar data, email data, schedule data, credit card usage data,purchase history data, weather data, other sensor data that may besensed or otherwise detected by a sensor (or detector) component,derived from a sensor component associated with the user or an event(including location, motion, orientation, position, user access,user-activity, network-access, device-charging, or other data that iscapable of being provided by one or more sensor component) and manymore. Data collection component 412 may also be configured to collectcontextual information associated with other individuals that areassociated with the user, including individuals associated with theuser's calendar events and/or reminders.

User profile storage 418 is configured to store the contextualinformation that is collected by data collection component 412. Userprofile storage 418 may include one or more computer storage mediaand/or one or more computing devices, and may comprise one or moreapplications or services on a user device, across multiple user devices,and/or in the cloud. User profile storage 418 may include one or aplurality of storage devices. In an embodiment, in addition to thecontextual information collected by data collection component 412, userprofile storage 418 stores contextual information that is inferred orotherwise derived from the collected data or other informationassociated with the user. For example, indications of frequently visitedlocations, frequently traveled routes, regularly attended events, and soforth, which may be inferred from historical location/travel data andcalendar data, may be stored.

Calendar information storage 420 may include one or more computerstorage media and/or one or more computing devices, and may comprise oneor more applications or services on a user device, across multiple userdevices, or in the cloud. Calendar information storage 420 storesinformation related to a user's calendaring applications and/orscheduling applications, or other types of applications that utilize ormaintain scheduled events and reminders. Calendaring and schedulingapplications generally organize and display a user's activities, tasks,jobs, appointments, meetings, and other types of events. They may alsoprovide event reminders or notifications that are presented to a userbased on the date and time of an event. In an embodiment, calendarinformation storage 420 stores information associated with a pluralityof users.

Inference engine 414 may include one or more computing devicesconfigured to derive contextual information associated with a user.Inference engine 414 may comprise one or more applications or serviceson a user device, across multiple user devices, and/or in the cloud. Inan embodiment, inference engine 414 derives contextual informationassociated with a user based on information accessed from calendarinformation storage 420 and user profile storage 418. Inference engine414 is configured to derive various kinds of information that may beutilized to determine when to surface, or trigger, a reminder. Forexample, in an embodiment, inference engine 414 accesses, within auser's calendar information, an event reminder that describes an eventassociated with the user. Inference engine 414 identifies an individual,other than the user, associated with the event, and determines a futuretime at which the user is predicted to be within a threshold proximityof the individual. The proximity of the user to the other individual maybe determined based on a distance between the user and the otherindividual, such as a straight-line distance or a distance along a routesuch as streets, sidewalks, and so forth. The proximity may also bebased on an amount of travel time between the user and the individual,e.g., an amount of walking time, driving time, or other transportationtime. In an embodiment, the proximity of the individual is determinedbased on a distance and/or amount of travel time between the otherindividual and a point along a route the user is predicted to travel.The proximity may also be determined based on an amount of distanceand/or travel time required to deviate from the predicted route in orderto meet up with the other individual. A threshold value associated withthe proximity, within which the user is determined to be withinproximity of the individual, may be determined based on a userpreference for a specific distance or specific travel time and/or apredetermined distance or travel time. In an embodiment, a thresholdvalue associated with the proximity is determined at least in part basedon the nature of the relationship between the user and the otherindividual, and/or a priority associated with the other individual. Forexample, when a task is associated with a close family member, ascompared to being associated with a friend, the user may be willing totravel farther to perform the task. In that event, a larger proximitythreshold may be used than if the task were associated with the friend.A priority associated with another individual may be based on whetherthe individual is designated as within the user's inner circle, and/oron levels of priority assigned to individuals within the user's innercircle.

The future time may be determined based on contextual informationassociated with the user. The contextual information may includeinformation such as calendar information, scheduled events, otherreminders, known routes historically traveled by the user and/or thetimes they were traveled, known locations historically visited by theuser and/or the times they were visited, and so forth. Similarly, knowninformation about the other individual may be used to predict the otherindividual's location. This may include both: (1) information that isknown within the user's contextual information without requiring accessto the other individual's personal information (e.g., a calendar invitethat includes the individual, a home location for the individual, a worklocation for the individual, etc.); and (2) information that wouldrequire access to the other individual's personal information (e.g.,calendar information, reminders, current GPS from the individual'smobile device, and so forth). The other individual's personalinformation may be accessible based on permission granted by the otherindividual. A time to trigger the reminder for presentation to the useris determined, and may be determined to occur some period of time priorto the future time when the user is predicted to be within proximity ofthe individual. The time to trigger the reminder may be a specific time,or may be based at least in part on a geofence, such as when the userleaves from or arrives at a particular location. In an embodiment,reminder surfacing component 416 is configured to determine that thetime for triggering a reminder has occurred, e.g., that the current timecorresponds to a particular predetermined time, or based on a geofence,and trigger the reminder to be presented to the user.

Referring to FIG. 5, an exemplary system is depicted for triggeringpresentation of a reminder suitable for use with an embodiment of theinvention, and is generally referred to as system 500. System 500represents only one example of a suitable system and is not intended tosuggest any limitation as to the scope of use or functionality of theinvention. Neither should system 500 be interpreted as having anydependency or requirement relating to any single component orcombination of components illustrated therein. Other arrangements andelements can be used in addition to or instead of those shown, and someelements may be omitted altogether for the sake of clarity. Further,many of the elements described herein are functional entities that maybe implemented as discrete or distributed components or in conjunctionwith other components, and in any suitable combination and location.

System 500 includes a reminder component 510, a user profile storage512, an assistant service component 514, a data collection component516, and an inference engine 518. System 500 communicates with one ormore user devices 520, which are not necessarily part of system 500.

In an embodiment, reminder component 510 includes one or more computingdevices configured to manage reminders. Reminder component 510 maycomprise one or more applications or services on a user device, acrossmultiple user devices, in the cloud, or a combination thereof. Remindercomponent 510 communicates with user device 520 and may receive datafrom user device 520 such as reminder data and contextual userinformation. Reminder data may include parameters that are used toconfigure a reminder, such as locations, dates, times, subjects,references to other users or individuals, and so forth. Contextual userinformation may include current location, local time, GPS and othersensor data, calendar information, user preferences, email data, textmessage data, and so forth. Contextual information may be stored in userprofile storage 512. In an embodiment, reminder component 510 stores andmaintains reminders that are to be surfaced, i.e., presented, to theuser at some point in time. The stored reminders may include any or allof the reminder parameters described above which are received from userdevice 520. In an embodiment, the stored reminders include one or moreparameters received from inference engine 518. For example, inferenceengine 518 may provide a trigger time for triggering a particularreminder. Data communicated from reminder component 510 to user device520 may include reminders to be presented to the user on the userdevice. In an embodiment, reminder component 510 is configured todetermine that the time for triggering a reminder has occurred, andtrigger the reminder to be presented to the user. In an embodiment,reminder component 510 ensures that the reminders sync intelligentlyacross devices, e.g., are triggered on appropriate devices of a userdepending on which device or devices are currently in use by the user.Reminder component 510 may also resolve or infer some information aboutan individual named in an event or reminder, such as whether theindividual's association with the user is from a work relationship,personal relationship, social relationship, family relationship, and soforth.

User profile storage 512 may include one or more computer storage mediaand/or one or more computing devices, and may include one or a pluralityof storage devices. User profile storage 512 may comprise one or moreapplications or services on a user device, across multiple user devices,or in the cloud. In an embodiment, user profile storage 512 isconfigured to store contextual information associated with user device520 and/or the user of user device 520. The contextual information maybe received from reminder component 510, and may also be received fromeither or both of data collection component 516 and inference engine518. In an embodiment, in addition to the contextual information, userprofile storage 512 stores contextual information that is inferred orotherwise derived from other contextual data and/or other informationassociated with a user. For example, indications of frequently-visitedlocations, frequently-traveled routes, regularly-attended events, and soforth, as determined from a user's historical travel patterns, may bestored.

In an embodiment, inference engine 518 includes one or more computingdevices and may comprise one or more applications or services on a userdevice, across multiple user devices, and/or in the cloud. Inferenceengine 518 may be configured to derive contextual information associatedwith a user based on any of information received from user device 520,calendar information, reminder information, and user profileinformation. User profile storage 512 may comprise one or more computerstorage media and/or one or more applications or services on a userdevice, across multiple user devices, and/or in the cloud. Inferenceengine 518 may derive various kinds of information that may be utilizedto determine when to surface, or trigger, a reminder. For example, in anembodiment, inference engine 518 accesses an event reminder thatdescribes an event associated with the user. Inference engine 518identifies an individual, other than the user, associated with theevent, and determines a future time at which the user is predicted to bewithin a predetermined proximity of the individual. The proximity of theuser to the individual may be determined based on a distance between theuser and the individual, such as a straight-line distance or a distancealong a route such as streets, sidewalks, and so forth. The proximitymay also be based on an amount of travel time between the user and theindividual, e.g., an amount of walking time, driving time, or othertransportation time. In an embodiment, the proximity of the individualis determined based on a distance and/or amount of travel time betweenthe other individual and a point along a route the user is predicted totravel. The proximity may also be determined based on an amount ofdistance and/or travel time required to deviate from the predicted routein order to meet up with the other individual.

The future time may be determined based on contextual informationassociated with the user. The contextual information may includeinformation such as calendar information, scheduled events, otherreminders, known routes historically traveled by the user and/or thetimes they were traveled, known locations historically visited by theuser and/or the times they were visited, and so forth. Similarly, knowninformation about the other individual may be used to predict the otherindividual's location. This may include both: (1) information that isknown within the user's contextual information without requiring accessto the other individual's personal information (e.g., a calendar invitethat includes the individual, a home location for the individual, a worklocation for the individual, etc.); and (2) information that wouldrequire access to the other individual's personal information (e.g.,calendar information, reminders, current GPS from the individual'smobile device, and so forth.) The other individual's personalinformation may be accessible based on permission granted by the otherindividual. A time to trigger the reminder for presentation to the useris determined, and may be determined to occur some period of time priorto the future time when the user is predicted to be within proximity ofthe individual. The time to trigger the reminder may be a specificpredetermined time, or may be based on a geofence, such as when the userleaves from or arrives at a particular location. In an embodiment,inference engine 518 provides the trigger time to reminder component510, which associates it with the reminder, and which may determine whenthe time for triggering the reminder has occurred, e.g., that thecurrent time corresponds to a particular predetermined time, or based ona geofence.

In an embodiment, data collection component 516 includes one or morecomputing devices and is configured to collect contextual informationassociated with the user. Data collection component 516 may comprise oneor more applications or services on a user device, across multiple userdevices, or in the cloud. In an embodiment, the contextual informationincludes user preferences, identification of individuals associated withthe user, frequently visited locations, frequently traveled routes,locations associated with events, locations associated with the user,the user's current location, and so forth. The contextual informationmay be collected or derived from a variety of sources. In someembodiments, the contextual data may be obtained from one or moresensors, such as sensors providing smartphone data, home-sensor data,GPS data, vehicle signal data, wearable device data, user device data,gyroscope data, accelerometer data, calendar data, email data, scheduledata, credit card usage data, purchase history data, weather data, othersensor data that may be sensed or otherwise detected by a sensor (ordetector) component, derived from a sensor component associated with theuser or an event (including location, motion, orientation, position,user-access, user-activity, network-access, device-charging, or otherdata that is capable of being provided by one or more sensor component)and many more.

In an embodiment, assistant service component 514 includes one or morecomputing devices and is configured to surface contextually relevantreminders and related content to a user, based on reminder datadetermined by reminder component 510, user profile data from userprofile storage 512, and/or other contextual data about the user.Assistant service component 514 may comprise one or more applications orservices on a user device, across multiple user devices, in the cloud,or a combination thereof. For example, in one embodiment, assistantservice component 514 manages the presentation of reminders to a useracross multiple user devices 520 associated with that user. Based onreminder data and user contextual data, assistant service component 514may determine on which user device(s) 520 a reminder is presented, aswell as the context of the presentation, including how it is presented(or in what format and how much content, which can be dependent on theuser device or context), when it is presented, and what supplementalcontent is presented with it. In particular, in some embodiments,assistant service component 514 applies utilizes sensed user data andcontextual information in order to determine the presentation ofreminders.

In some embodiments, assistant service component 514 generates userinterface features associated with a notification. Such features caninclude interface elements (such as graphics buttons, sliders, menus,audio prompts, alerts, alarms, vibrations, pop-up windows,notification-bar or status-bar items, in-app notifications, or othersimilar features for interfacing with a user), queries, and prompts.Some embodiments of assistant service component 514 capture userresponses to notifications or user activity associated withnotifications.

User device 520 may comprise any type of computing device capable of useby a user. For example, in one embodiment, user device 520 may besimilar to computing device 100 described below with regard to FIG. 1.By way of example and not limitation, a user device may be embodied as apersonal computer, a laptop computer, a mobile or mobile device, asmartphone, a tablet computer, a smart watch, a wearable computer, apersonal digital assistant (PDA), an MP3 player, GPS or device, videoplayer, handheld communications device, gaming device or system,entertainment system, vehicle computer system, embedded systemcontroller, remote control, appliance, consumer electronic device, aworkstation, or any combination of these delineated devices, or anyother suitable device.

Referring now to FIG. 1, an exemplary operating environment forimplementing an embodiment of the present invention is shown anddesignated generally as computing device 100. Computing device 100 isbut one example of a suitable computing environment and is not intendedto suggest any limitation as to the scope of use or functionality ofinvention embodiments. Neither should the computing environment 100 beinterpreted as having any dependency or requirement relating to any oneor combination of components illustrated.

Some embodiments of the invention may be described in the generalcontext of computer code or machine-useable instructions, includingcomputer-executable instructions such as program modules, being executedby a computer or other machine, such as a personal digital assistant orother handheld device. Generally, program modules including routines,programs, objects, components, data structures, etc., refer to code thatperforms particular tasks or implements particular abstract data types.Some embodiments of the invention may be practiced in a variety ofsystem configurations, including handheld devices, consumer electronics,general-purpose computers, more specialty computing devices, etc. Someembodiments of the invention may also be practiced in distributedcomputing environments where tasks are performed by remote-processingdevices that are linked through a communications network.

With reference to FIG. 1, computing device 100 includes a bus 110 thatdirectly or indirectly couples the following devices: memory 112, one ormore processors 114, one or more presentation components 116,input/output ports 118, input/output components 120, and an illustrativepower supply 122. Bus 110 represents what may be one or more busses(such as an address bus, data bus, or combination thereof). Although thevarious blocks of FIG. 1 are shown with lines for the sake of clarity,in reality, delineating various components is not so clear, andmetaphorically, the lines would more accurately be grey and fuzzy. Forexample, one may consider a presentation component such as a displaydevice to be an I/O component. Also, processors have memory. Werecognize that such is the nature of the art, and reiterate that thediagram of FIG. 1 is merely illustrative of an exemplary computingdevice that can be used in connection with one or more embodiments ofthe present invention. Distinction is not made between such categoriesas “workstation,” “server,” “laptop,” “handheld device,” etc., as allare contemplated within the scope of FIG. 1 and reference to “computingdevice.”

Computing device 100 typically includes a variety of computer-readablemedia. By way of example, and not limitation, computer-readable mediamay comprise Random Access Memory (RAM); Read Only Memory (ROM);Electronically Erasable Programmable Read Only Memory (EEPROM); flashmemory or other memory technologies; CDROM, digital versatile disks(DVD) or other optical or holographic media; magnetic cassettes,magnetic tape, magnetic disk storage or other magnetic storage devices,carrier wave or any other medium that can be used to encode desiredinformation and be accessed by computing device 100.

Memory 112 includes computer-storage media in the form of volatileand/or nonvolatile memory. The memory may be removable, nonremovable, ora combination thereof. Exemplary hardware devices include solid-statememory, hard drives, optical-disc drives, etc. As used herein,computer-storage media does not include signals per se.

Computing device 100 includes one or more processors that read data fromvarious entities such as memory 112 or I/O components 120. Presentationcomponent(s) 116 present data indications to a user or other device.Exemplary presentation components include a display device, speaker,printing component, vibrating component, etc. I/O ports 118 allowcomputing device 100 to be logically coupled to other devices includingI/O components 120, some of which may be built in. Illustrativecomponents include a microphone, joystick, game pad, satellite dish,scanner, printer, wireless device, etc.

From the foregoing, it will be seen that this invention is one welladapted to attain all the ends and objects hereinabove set forthtogether with other advantages which are obvious and which are inherentto the structure. It will be understood that certain features andsubcombinations are of utility and may be employed without reference toother features and subcombinations. This is contemplated by and iswithin the scope of the claims. Since many possible embodiments may bemade of the invention without departing from the scope thereof, it is tobe understood that all matter herein set forth or shown in theaccompanying drawings is to be interpreted as illustrative and not in alimiting sense.

1. A method of triggering presentation of a reminder on a mobile device,comprising: accessing, via a processing device, the reminder that isstored in one or more computer storage media, wherein the reminderdescribes a task associated with a user of the mobile device, whereinthe task described in the reminder is not defined with respect to aspecific time; identifying an individual associated with the task,wherein the individual is a person other than the user; predicting afuture time at which the user will be within proximity of theindividual; determining a time to trigger the reminder for presentationto the user, such that the time to trigger the reminder occurs beforethe future time at which the user is predicted to be within proximity ofthe individual; determining that the time for triggering the reminderhas occurred; and based on the determination that the time fortriggering the reminder has occurred, causing the reminder to bepresented on the mobile device.
 2. (canceled)
 3. The method of claim 1,wherein predicting the future time at which the user will be withinproximity of the individual comprises: accessing calendar informationassociated with the user; identifying an event from the calendarinformation of the user, wherein the event is associated with theindividual and has a scheduled future time; and identifying thescheduled future time of the event as the future time at which the useris predicted to be within proximity of the individual.
 4. The method ofclaim 3, wherein the event is a separate event from the task.
 5. Themethod of claim 1, wherein the time to trigger the reminder isdetermined by: predicting a future location of the user at which theuser will be in proximity of the individual at the predicted futuretime; identifying a starting location of the user; predicting a routethe user will travel from the starting location to the future location;determining an amount of travel time along the predicted route from thestarting location to the future location; and determining the time totrigger the reminder based at least in part on the amount of traveltime.
 6. The method of claim 5, wherein predicting the route the userwill travel from the starting location to the future location comprises:accessing user profile data associated with the user; identifying one ormore routes the user has historically traveled from the startinglocation to the future location; determining a most likely route fromthe one or more routes the user has historically traveled, based on aprobability associated with each of the one or more routes; andidentifying the most likely route as the predicted route the user willtravel from the starting location to the future location.
 7. The methodof claim 5, wherein identifying the starting location of the usercomprises identifying a current location of the user as the startinglocation of the user.
 8. The method of claim 5, wherein identifying thestarting location of the user comprises: accessing user profile dataassociated with the user; identifying historical travel patterns of theuser from the user profile data; predicting a second future location ofthe user where the user will be located prior to the predicted futuretime, based at least in part on the historical travel patterns of theuser; identifying the predicted second future location as the startinglocation of the user.
 9. The method of claim 1, wherein once triggered,the reminder is configured to persist during a period of time prior tothe predicted future time at which the user will be within proximity ofthe individual.
 10. A system for triggering presentation of a calendarevent reminder on a mobile device, comprising: one or morecomputer-storage media configured to store calendar informationassociated with a user of a user device; a data collection componentcomprising one or more processing devices configured to collectcontextual information associated with the user; one or morecomputer-storage media configured to store the contextual informationassociated with the user; an inference engine comprising one or moreprocessing devices configured to access an event reminder that describesa task associated with a user of a user device, wherein the taskdescribed in the event reminder is not defined with respect to aspecific time; identify an individual associated with the task, whereinthe individual is a person other than the user; determine a future timeat which the user is predicted to be within a predetermined proximity ofthe individual; determine a time to trigger the reminder forpresentation to the user, wherein the time to trigger the reminderoccurs a period of time prior to the future time at which the user ispredicted to be within the predetermined proximity of the individual; areminder surfacing component comprising one or more processing devicesconfigured to determine that the time for triggering the reminder hasoccurred; and cause the reminder to be presented on the mobile device.11. The system of claim 10, wherein determine the future time at whichthe user is predicted to be within the predetermined proximity of theindividual comprises: access calendar information associated with theuser; access calendar information associated with the individual;identify a first event from the calendar information of the userassociated with a first location and a first time; identify a secondevent from the calendar information of the individual associated with asecond location and a second time; determine that the first location iswithin a proximity of the second location; determine that the first timeis within a proximity of the second time; and identify a time associatedwith the first event or a time associated with the second event as thefuture time at which the user is predicted to be within thepredetermined proximity of the individual.
 12. The system of claim 11,wherein the first event and the second event are independent withrespect to each other.
 13. The system of claim 10, wherein to determinethe period of time prior to the future time at which the user ispredicted to be within the predetermined proximity of the individual,the inference engine is further configured to: identify a currentlocation of the user; identify a future location at which the user ispredicted to be within the predetermined proximity of the individual;determine a route the user is predicted to travel from the currentlocation to the future location; determine an amount of travel timealong the route from the current location to the future location; anddetermine the period of time prior to the future time at which the useris predicted to be within the predetermined proximity of the individualbased at least in part on the amount of travel time.
 14. A method oftriggering presentation of a calendar event reminder, comprising: by wayof one or more processing devices: accessing an event reminder that isstored in an information storage associated with a schedulingapplication, wherein the event reminder describes an event associatedwith a user of a user device; identifying an individual associated withthe event, wherein the individual is a person other than the user;determining a predicted future time at which the user will be within apredetermined proximity of the individual at a point along a predictedroute the user will travel, wherein determining the predicted futuretime comprises: determining the predicted route the user will travel ata first future time; determining a predicted location of the individualat a second future time; determining that the point along the predictedroute is within the predetermined proximity of the predicted location ofthe individual; determining that the user will reach the point along thepredicted route while the individual is at the predicted location of theindividual; identifying a time associated with when the user will reachthe point along the route as the predicted future time when the userwill be within the predetermined proximity of the individual;determining a time to trigger the reminder for presentation to the user,wherein the time to trigger the reminder is determined to occur a periodof time prior to the predicted future time when the user will be withinthe predetermined proximity of the individual; determining that the timeto trigger the reminder has occurred; and based on the determinationthat the time for triggering the reminder has occurred, causing thereminder to be presented to the user.
 15. (canceled)
 16. The method ofclaim 14, wherein determining the predicted route the user will travelat the first future time is based at least in part on one or more of:calendar information associated with the user; user profile informationassociated with the user; or one or more historical travel patternsassociated with the user.
 17. The method of claim 14, whereindetermining the predicted location of the individual at the secondfuture time is based at least in part on one or more of: calendarinformation associated with the individual; user profile informationassociated with the individual; or one or more historical travelpatterns associated with the individual.
 18. (canceled)
 19. The methodof claim 14, wherein a destination location of the predicted route towhich the user is predicted to travel is independent of the locationwhere the individual is predicted to be located.
 20. The method of claim14, wherein determining the route the user is predicted to travel at thefirst future time comprises: identifying a route that the user iscurrently traveling; determining a predicted remainder of the currentroute that the user will travel; and identifying the predicted remainderof the current route as the route the user is predicted to travel at thefirst future time.
 21. The method of claim 14, wherein the predictedroute is a route that is suggested to the user.
 22. The method of claim14, wherein the event described in the event reminder is not definedwith respect to a specific time.
 23. The method of claim 14, whereinonce triggered, the reminder is configured to persist during a period oftime prior to the predicted future time at which the user will be withina predetermined proximity of the individual.